package com.zhentao.engine;

import com.zhentao.pojo.ParamRule;
import com.zhentao.vo.RuleExecuteResultVO;

import java.util.Map;

/**
 * 规则引擎核心接口
 * @author zhentao
 * @date 2024-12-19
 */
public interface RuleEngine {
    
    /**
     * 执行规则
     * @param rule 规则对象
     * @param inputData 输入参数
     * @param context 执行上下文
     * @return 执行结果
     */
    RuleExecuteResultVO executeRule(ParamRule rule, Map<String, Object> inputData, Map<String, Object> context);
    
    /**
     * 校验规则语法
     * @param ruleContent 规则内容
     * @param engineType 引擎类型
     * @return 校验结果，null表示校验通过，非null表示错误信息
     */
    String validateRuleSyntax(String ruleContent, String engineType);
    
    /**
     * 支持的引擎类型
     * @return 引擎类型代码
     */
    String getSupportedEngineType();
    
    /**
     * 引擎优先级，数值越大优先级越高
     * @return 优先级
     */
    int getPriority();
}

